#pragma once

#include "PfInputDevice.h"

namespace pf
{
	namespace KeyboardButton
	{
		enum Enum
		{
			Key_A,
			Key_B,
			Key_C,
			Key_D,
			Key_E,
			Key_F,
			Key_G,
			Key_H,
			Key_I,
			Key_J,
			Key_K,
			Key_L,
			Key_M,
			Key_N,
			Key_O,
			Key_P,
			Key_Q,
			Key_R,
			Key_S,
			Key_T,
			Key_U,
			Key_V,
			Key_W,
			Key_X,
			Key_Y,
			Key_Z,
			Key_0,
			Key_1,
			Key_2,
			Key_3,
			Key_4,
			Key_5,
			Key_6,
			Key_7,
			Key_8,
			Key_9,
			Key_Numpad0,
			Key_Numpad1,
			Key_Numpad2,
			Key_Numpad3,
			Key_Numpad4,
			Key_Numpad5,
			Key_Numpad6,
			Key_Numpad7,
			Key_Numpad8,
			Key_Numpad9,
			Key_Space,

			Key_Unknown,
			Key_NumberOf,
		};
	}

	namespace KeyboardButtonState
	{
		enum Enum
		{
			KeyState_Up,
			KeyState_Down,
		};
	}

	class InputKeyboard
	{
	public:

		virtual bool	GetKeyPressed(KeyboardButton::Enum key) = 0;
		virtual bool	GetKeyDown(KeyboardButton::Enum key) = 0;
		virtual bool	GetKeyUp(KeyboardButton::Enum key) = 0;

	private:
	};

	typedef cr::Handle<InputKeyboard> InputKeyboardHandle;
}